#include <iostream>

using namespace std;

template <typename T = void>
struct A;

template <>
struct A<void>
{
	int i = 0;

	virtual void show() { cout << i << endl; }
};

template <typename T>
struct A : public A<>
{
	typedef A<> Base;

	T* t = NULL;

	void show()
	{
		cout << i << ",";

		if (t)
			cout << *t << endl;
		else
			cout << "null" << endl;

	}
};

int main()
{
	A<int> a;
	a.show();

	return 0;
}